// 2-3-1 引用-重要概念-把引用作为参数

/**
 * C++ 引用
 * 引用变量是一个别名，也就是说，它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量，就可以使用该引用名称或变量名称来指向变量。
 * 
 * ----------------
 * 重要概念
 * 引用通常用于函数参数列表和函数返回值。下面列出了 C++ 程序员必须清楚的两个与 C++ 引用相关的重要概念：
 * 1. 把引用作为参数
 * 	C++ 支持把引用作为参数传给函数，这比传一般的参数更安全。
 * 
 * 2. 把引用作为返回值
 *  可以从 C++ 函数中返回引用，就像返回其他数据类型一样。
 * 
 * ~~~~~~~~~~~~~~~~~~~~~~~~
 * 把引用作为参数
 * 我们已经讨论了如何使用指针来实现引用调用函数。下面的实例使用了引用来实现引用调用函数
*/
#include <iostream>
void swap(int &, int &);

int main(void)
{
  int a = 4;
  int b = 5;

  std::cout << "====交换前===="
            << "\n"
            << "a : " << a << "\n"
            << "b : " << b << std::endl;

  swap(a, b);

  std::cout << "====交换后===="
            << "\n"
            << "a : " << a << "\n"
            << "b : " << b << std::endl;
  printf("-----------end---------------\n");
  return 0;
}

void swap(int &a, int &b)
{
  a = a ^ b;
  b = a ^ b;
  a = a ^ b;
}